<?php

namespace slinks\extensions\aop\core;

/**
 * Interface for all aop interceptors. 
 * 
 * @author Navid Mitchell
 *
 */
interface IInterceptor {

    /**
     * Called prior to executing the intercepted method.
     * 
     * @param String $className is the className of the class whose method is being executed.
     * @param String $methodName is the name of the method being called.
     * @param array $arguments is an enumerated array containing the parameters passed to the $name'ed method.
     */
    public function before($className, $methodName, $arguments);

    /**
     * Called after executing the intercepted method.
     * 
     * @param String $className is the className of the class whose method is being executed.
     * @param String $methodName is the name of the method being called.
     * @param array $arguments is an enumerated array containing the parameters passed to the $name'ed method.
     * @param $return the value returned from the intercepted method.
     */
    public function after($className, $methodName, $arguments, $return=null);
}